导航菜单
首页 >  VideoFileClip 获取视频报错、  > 生成和导出视频剪辑

生成和导出视频剪辑

VideoClip¶

VideoClip是MoviePy中所有其它视频剪辑里最基本的种类。如果你只想编辑视频文件,你就永远不会用到它。当你想通过从别的库里生成的帧来生成动画时,这个类就会很有用。你需要做的只是定义一个make_frame(t)函数,使它返回一个HxWx3的numpy数组(8位整数)来代表时间t时的帧。这里是一个使用制图库Gizeh的例子:

import gizehimport moviepy.editor as mpydef make_frame(t):surface = gizeh.Surface(128,128) # width, heightradius = W*(1+ (t*(2-t))**2 )/6 # the radius varies over timecircle = gizeh.circle(radius, xy = (64,64), fill=(1,0,0))circle.draw(surface)return surface.get_npimage() # returns a 8-bit RGB arrayclip = mpy.VideoClip(make_frame, duration=2) # 2 secondsclip.write_gif("circle.gif",fps=15)

http://zulko.github.io/moviepy/_images/circle.gif

注意,剪辑使用make_frame并没有一个精确的帧速率,所以你必须要为write_gif和write_videofile,以及需要遍历每一帧的方法提供帧速率(fps,每秒的帧数)。

VideoFileClip¶

视频文件剪辑是由视频文件(支持大多数格式)或GIF文件中读取的剪辑。你可以像这样加载一个视频:

myclip = VideoFileClip("some_video.avi")myclip = VideoFileClip("some_animation.gif")

注意,这些剪辑都有fps(帧速率)属性,当你对剪辑做小改动时,帧速率将会被传送,而且会以write_videofile、write_gif等的默认设置会使用。例如:

myclip = VideoFileClip("some_video.avi")print (myclip.fps) # prints for instance '30'# Now cut the clip between t=10 and 25 secs. This conserves the fps.myclip2 = myclip.subclip(10, 25)myclip2.write_gif("test.gif") # the gif will have 30 fps

详见VideoFileClip。

ImageSequenceClip¶

这是一种由一系列图片组成的剪辑,你可以这样调用:

clip = ImageSequenceClip(images_list, fps=25)

相关推荐: